package jorm;

import jorm.dialect.Dialect;

/**
 * @author :陈磊 <br/>
 * Date: 12-12-28<br/>
 * Time: 下午11:32<br/>
 * connectMethod:13638363871@163.com<br/>
 * orm映射注册
 */
public interface IOrmProvider {

    /**
     * 初始化orm
     */
    void IntiOrm();
    /**
     * 获取ActiveRecordPlugin
     * @return
     */
    ActiveRecordPlugin getActiveRecordPlugin();

    /**
     * 打印sql语句
     */
    void showSql(boolean isprintln);

    /**设置数据库方言，默认是mysql*/
    void setDialect(Dialect dialect);
    /**
     *  注册model orm
     * @param tablename  model   对应的表名
     * @param keyID   主键ID
     * @param modelClass  modelclass
     */
    void RegisterModel(String tablename, String keyID, Class<? extends Model<?>> modelClass);

    /**
     *  注册model orm
     * @param tablename  model   对应的表名  action： keyID is default id  ,
     *                   if not,please use the---> RegisterModel(String tablename,String keyID,Class<? extends Model<?>> modelClass);
     * @param modelClass  modelclass
     */
    void RegisterModel(String tablename, Class<? extends Model<?>> modelClass);

    /**
     *  自动 注册model orm
     *  注意：使用此方法的时候，tablename必须跟相应的model命名一样，可以不区分大小写
     */
    void AutoRegisterModel() throws ClassNotFoundException, IllegalAccessException, InstantiationException;
}
